﻿#ifndef __BACKGROUND_H
#define __BACKGROUND_H
#include "Entity.h"
#include"Animation.h"
#include<qmap.h>
#include <QElapsedTimer>
//秒重载
unsigned long long  operator"" _s(unsigned long long num);
class Resource;
class Background : public Entity
{
public:
	Background();
	Background(int x, int y);
	//添加模型，从资源获取name模型,并取alias别名
	void addFrame(const QString& name,const QString& alias="正常");
	//修改模型，从资源获取name模型,修改alias别名对应的模型
	void modifiFrame(const QString& name, const QString& alias = "正常");
	//从资源获取模型
	QVector<QPixmap>* getFrame(const QString& name);
	//初始化
	virtual void init();
	//更新数据
	virtual void update()override;
	//绘图
	virtual void draw(QPainter* painter)override;
	//移动操作
	//virtual void setPos(int dx, int dy);
	
	//移动左上角的点
	void move(const QPoint& Pos);
	//移动左上角的点
	void move(const int x,const int y);
	//移动左上角的x
	void setX(const int x);
	//移动左上角的y
	void setY(const int y);
	//位置获取左上角的点
	const QPoint getPos();
	//获取模型中心点
	const QPoint getCenterPos();
	//获取模型大小
	const QSize getSize();
	//获取当前时间秒数
	size_t getCurrentTime();
	//定时时间
	virtual void setTimer(const int time);
	virtual const int getTimer();
	//定时器触发
	virtual bool TimerTrigger();
	QMap<QString, Animation>& getModel();
	const QRect& getModelRect();
	//设置暂停
	virtual void setPause(bool flag);
protected:
	//设置模型大小
	void setSize(QSize size);
	inline static QElapsedTimer globalElapsedTimer;
	int m_timer = 20;//数据更新时间毫秒
	size_t m_temp = 0;//临时
	bool m_pause = false;//暂停
private:
	QRect m_modelRect;//模型
	QMap<QString, Animation> m_model;//模型
};
#endif